<?php /* Smarty version Smarty-3.0.6, created on 2011-10-16 19:25:48
         compiled from "./templates/s029_1.dwt" */ ?>
<?php /*%%SmartyHeaderCode:3194366784e9abf3c2df6e1-49162475%%*/if(!defined('SMARTY_DIR')) exit('no direct access allowed');
$_smarty_tpl->decodeProperties(array (
  'file_dependency' => 
  array (
    '55b488d0e7850a6b5b99189bccf7ec70b4bc92fa' => 
    array (
      0 => './templates/s029_1.dwt',
      1 => 1318673513,
      2 => 'file',
    ),
  ),
  'nocache_hash' => '3194366784e9abf3c2df6e1-49162475',
  'function' => 
  array (
  ),
  'has_nocache_code' => false,
)); /*/%%SmartyHeaderCode%%*/?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- TemplateBeginEditable name="doctitle" -->
<title><?php echo $_smarty_tpl->getVariable('title')->value;?>
</title>
<link href="css/style.css" rel="stylesheet" type="text/css">
<!-- TemplateEndEditable -->
<!-- TemplateBeginEditable name="head" -->
<!-- TemplateEndEditable -->
</head>

<body>
<?php $_template = new Smarty_Internal_Template("top.tpl", $_smarty_tpl->smarty, $_smarty_tpl, $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, null, null);
$_template->assign('tip',"029 smarty模版引擎的内置函数"); echo $_template->getRenderedTemplate();?><?php $_template->updateParentVariables(0);?><?php unset($_template);?>
<div class="text">
<b>foreach</b>
<strong>foreach</strong>循环函数，类似与<strong>section</strong>都是把数组内容罗列出来的函数。一般我们只用于一维数组的展示<br />
我们用实例来演示它使用无关键帧和有关键帧的情况下的运算方式<br />
我们在php文件中加入下面的代码：<br />
<div class="code">
$val1=array(3,5,9,4,2,7);<br />
$smarty-&gt;assign(&quot;arr1&quot;,$val1);<br />
$val2=array('key1'=&gt;&quot;第一个值&quot;,'key2'=&gt;&quot;第2个值&quot;,'key3'=&gt;&quot;第3个值&quot;,'key4'=&gt;&quot;第4个值&quot;,'key5'=&gt;&quot;第5个值&quot;);<br />
$smarty-&gt;assign(&quot;arr2&quot;,$val2);<br />
</div>
而在模版文件中加入下面的代码:<br />
<div class="code">

{foreach from=$arr1 item=v}<br />
数组内容:{$v}&lt;br /&gt;<br />
{/foreach}<br />
{foreach from=$arr2 item=v key=k}<br />
{$k}=&gt;{$v}&lt;br /&gt;<br />
{/foreach}<br />
 </div>
我们看到运算的结果：
<div class="effect">
<?php  $_smarty_tpl->tpl_vars['v'] = new Smarty_Variable;
 $_from = $_smarty_tpl->getVariable('arr1')->value; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array');}
if ($_smarty_tpl->_count($_from) > 0){
    foreach ($_from as $_smarty_tpl->tpl_vars['v']->key => $_smarty_tpl->tpl_vars['v']->value){
?>
数组内容:<?php echo $_smarty_tpl->tpl_vars['v']->value;?>
<br />
<?php }} ?>
<?php  $_smarty_tpl->tpl_vars['v'] = new Smarty_Variable;
 $_smarty_tpl->tpl_vars['k'] = new Smarty_Variable;
 $_from = $_smarty_tpl->getVariable('arr2')->value; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array');}
if ($_smarty_tpl->_count($_from) > 0){
    foreach ($_from as $_smarty_tpl->tpl_vars['v']->key => $_smarty_tpl->tpl_vars['v']->value){
 $_smarty_tpl->tpl_vars['k']->value = $_smarty_tpl->tpl_vars['v']->key;
?>
<?php echo $_smarty_tpl->tpl_vars['k']->value;?>
=><?php echo $_smarty_tpl->tpl_vars['v']->value;?>
<br />
<?php }} ?>
</div>
</div>
<div class="text">
<b>include</b>
<strong>include</strong>的作用在与在php中的一样，可以引入一个文件，不过引入的方式有点不同。<br />
我们建立一个s029_2.dwt的模版文件里面的内容如下所示：<br />
<div class="code">
我是被引用的文件我的里面有个变量：{$test}&lt;br&gt;<br />

</div>
我们在模版文件中使用<strong>include</strong>函数<br />
<div class="code">

{include file="s029_2.dwt" test="[这是一个测试变量]"}


</div>
我们来看运算的结果<br />
<div class="effect">
<?php $_template = new Smarty_Internal_Template("s029_2.dwt", $_smarty_tpl->smarty, $_smarty_tpl, $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, null, null);
$_template->assign('test',"[这是一个测试变量]"); echo $_template->getRenderedTemplate();?><?php $_template->updateParentVariables(0);?><?php unset($_template);?>
</div>
</div>
<div class="text">
<b>if</b>
<strong>smarty</strong>中同样支持<strong>if</strong>判断语句，用法十分类似与php，我们来看下面代码<br />
php文件部分<br />
<div class="code">
$smarty-&gt;assign(&quot;name&quot;,&quot;&quot;);
</div>
模版文件部分：
<div class="code">

{if $name==""}
内容是空的<br />
{else}
内容不是空的<br />
{/if}

</div>
运行效果
<div class="effect">
<?php if ($_smarty_tpl->getVariable('name')->value==''){?>
内容是空的<br />
<?php }else{ ?>
内容不是空的<br />
<?php }?>
</div>
</div>
<div class="text">
<b>literal</b>
在<strong>literal</strong>标签中的｛｝将不作为smarty的运算范围。比如<br />
我们来看这个代码<br />
<div class="code">
{literal}
<br />
{$name}<br />

{/literal}
</div>
我们来看结果
<div class="effect">

{$name}

</div>
</div>
<div class="text">
<b>strip</b>
<strong>strip</strong>标签内的html中的空格和回车会消失，而字符的空格则会保留。比如：<br />
<div class="code">
{strip}<br />
标签的空格或者文字的空格 是不是还在 <br />
&lt;a herf=&quot;#&quot; &gt;连接空格&lt;/a&gt;<br />
{/strip}

</div>
我们在源代码里面可以看到空格和回车都被合并了！
<div class="effect">
标签的空格或者文字的空格 是不是还在<a herf="#" >连接空格</a>
</div>
</div>
</div>
</body>
</html>
